/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ecom.dao;

import ecom.exception.DataAccessLayerException;
import ecom.entity.Image;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.criterion.Expression;

/**
 *
 * @author
 */
public class ImageDAO extends AbstractDAO {

    private final static String ID_PRODUCT = "product_id";

    public ImageDAO() {
        super();
    }

    /**
     * Crée une Image dans la base de données
     * @param img Image à créer
     */
    public void create(Image img) throws DataAccessLayerException {
        super.saveOrUpdate(img);
    }

    /**
     * Supprimer une Image de la base de données.
     * @param img Image à supprimer
     */
    public void delete(Image img) throws DataAccessLayerException {
        super.delete(img);
    }

    /**
     * Recherche une Image par sa clé primaire
     * @param id id de l'Image
     * @return Image Retourne une Image
     */
    public Image find(Integer id) throws DataAccessLayerException {
        return (Image) super.find(Image.class, id);
    }

    /**
     * Met à jour une Image dans la base de données
     * @param img Image à mettre à jour
     */
    public void update(Image img) throws DataAccessLayerException {
        super.saveOrUpdate(img);
    }

    /**
     * Recherche toutes les Images de la base de données
     * @return List<Image> Retourne une liste d'Image
     */
    public List<Image> findAll() throws DataAccessLayerException {
        return super.findAll(Image.class);
    }

    /**
     * Recherche les Images en fonction du produit
     * @param idProduct id du Product à recchercher
     * @return List<Image> Retourne une liste d'Image
     */
    public List<Image> findByIdProduct(int idProduct) throws DataAccessLayerException {
        List<Image> images = null;
        try {
            startOperation();
            Criteria crit = session.createCriteria(Image.class);
            crit.add(Expression.eq(ID_PRODUCT, idProduct));
            images = crit.list();
            tx.commit();
        } catch (HibernateException e) {
            handleException(e);
        }
        return images;
    }
}
